#ifndef __WIZ_DATATYPE_GRAPH_NODE_HPP__SHANHAOBO_19800429__
#define __WIZ_DATATYPE_GRAPH_NODE_HPP__SHANHAOBO_19800429__

#include "./WizDataTypeGraphForwardDeclare.hpp"

namespace Wiz
{
    namespace DGraph
    {
        namespace Node
        {
            ////////////////////////////////////////////////////////////////////
            ///==============================================================///
            class Type
            {
            public:
                Type()
                {
                }
                virtual ~Type();
            public:
                virtual ::Wiz::DGraph::Link::Input::Ptr  CreateInputLink();
                virtual ::Wiz::DGraph::Link::Output::Ptr CreateOutputLink();

                virtual ::Wiz::Void::Type DestroyLink(::Wiz::DGraph::Link::Input::Ptr);
                virtual ::Wiz::Void::Type DestroyLink(::Wiz::DGraph::Link::Output::Ptr);
            public:
                ::Wiz::DGraph::Link::Input::Set::Ref  GetInputSet(){return this->m_Input;};
                ::Wiz::DGraph::Link::Output::Set::Ref GetOutputSet(){return this->m_Output;};
                ::Wiz::Void::Type InsertInputLink(::Wiz::DGraph::Link::Input::Ptr);
                ::Wiz::Void::Type InsertOutputLink(::Wiz::DGraph::Link::Output::Ptr);
                ::Wiz::Void::Type Clear();
            protected:
                ::Wiz::DGraph::Link::Input::Set::Type m_Input;
                ::Wiz::DGraph::Link::Output::Set::Type m_Output;
            };
            ///==============================================================///
            ////////////////////////////////////////////////////////////////////
        } /// end of namespace Node
    } /// end of namespace DGraph

    namespace UGraph
    {
        namespace Node
        {
            class Type
            {
            public:
                Type()
                {
                }
                virtual ~Type();
            public:
                ::Wiz::Void::Type Break(::Wiz::UGraph::Node::Ptr);
                ::Wiz::Void::Type Clear();
                ::Wiz::Void::Type Connect(::Wiz::UGraph::Node::Ptr);
            protected:
                ::Wiz::UGraph::Node::Set::Type m_Connected;
            };
        } /// end of namespace Node
    } /// end of namespace UGraph
} /// end of namespace Wiz

#endif /*__WIZ_DATATYPE_GRAPH_NODE_HPP__SHANHAOBO_19800429__*/
